package java.classe;

import java.util.ArrayList;

public class Enum extends EnumEntidade {

	ListaValoresEnum valores = null;

	public Enum(String nome) {
		super(nome);
	}

	public String codigoFonte() {
		String modificador = super.modificador == null ? NONVALUE
				: super.modificador + ESPACO;
		String implementa = super.qualidades == null ? NONVALUE : ESPACO
				+ IMPLEMENTACAO + ESPACO + qualidades.codigoFonte();

		return pacote() + recursos() + modificador + ENUM + ESPACO + nome
				+ implementa + INICIOBLOCO + valores() + FIMCOMANDO
				+ construtor() + metodos() + classes() + FIMBLOCO;
	}

	private String valores() {
		return valores == null ? NONVALUE : valores.codigoFonte();
	}

	private String classes() {
		return classes == null ? NONVALUE : classes.codigoFonte();
	}

	private String metodos() {
		return metodos == null ? NONVALUE : metodos.codigoFonte();
	}

	private String construtor() {
		return super.construtores == null ? NONVALUE : super.construtores
				.codigoFonte();
	}

	private String recursos() {
		return super.recursos == null ? NONVALUE : super.recursos.codigoFonte();
	}

	private String pacote() {
		return super.pacote == null ? NONVALUE : super.pacote.codigoFonte()
				+ FIMCOMANDO;
	}

	class ListaValoresEnum extends ArrayList<String> {
		private static final long serialVersionUID = 77115400853680378L;

		String codigoFonte() {
			String s = get(0);
			for (int i = 1; i < size(); i++) {
				s += ", " + get(i);
			}
			return s;
		}
	}

	public void addValorEnum(String valorEnum) {
		valores = valores == null ? new ListaValoresEnum() : valores;
		valores.add(valorEnum);
	}
}
